home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc / Sample Code / Sample Editors⁄Viewers / Cappuccino / Source / Cappuccino.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-11  |  15.4 KB  |  425 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        Cappuccino.h
  3.  
  4.     Contains:    Sample part editor class implementation
  5.  
  6.     Written by:    Steve Smith and Troy Gaul
  7.     
  8.     Copyright:    © 1995 by Apple Computer, Inc., all rights reserved.
  9. */
  10.  
  11. #ifndef _CAPPUCCINO_
  12. #define _CAPPUCCINO_
  13.  
  14. // -- Compiler/Preprocessor Switches --
  15.  
  16. #ifndef _COMPILERDEFS_
  17. #include "CompDefs.h"
  18. #endif
  19.  
  20. // -- OpenDoc Includes --
  21.  
  22. #ifndef _ODTYPES_
  23. #include <ODTypes.h>
  24. #endif
  25.  
  26. // -- Macintosh Includes --
  27.  
  28. #ifndef __TYPES__
  29. #include <Types.h>
  30. #endif
  31.  
  32. //------------------------------------------------------------------------------
  33. // ODOptVirtual
  34. //    This preprocessor symbol is used to control the use of virtual functions
  35. //    for this class.  It can be set to "virtual" if you want to have a class
  36. //    where any of the functions may be overridden.
  37. //------------------------------------------------------------------------------
  38.  
  39. #ifndef ODOptVirtual
  40. #define ODOptVirtual
  41. #endif
  42.  
  43. //------------------------------------------------------------------------------
  44. // Forward Declarations
  45. //------------------------------------------------------------------------------
  46.  
  47. class Environment;
  48. class ODAppleEvent;
  49. class ODCanvas;
  50. class ODDesc;
  51. class ODDragItemIterator;
  52. class ODEmbeddedFramesIterator;
  53. class ODExtension;
  54. class ODFacet;
  55. class ODFocusSet;
  56. class ODFrame;
  57. class ODLink;
  58. class ODLinkSource;
  59. class ODMenuBar;
  60. class ODObjectSpec;
  61. class ODOSLToken;
  62. class ODSession;
  63. class ODShape;
  64. class ODStorageUnit;
  65. class ODStorageUnitView;
  66. class ODTypeList;
  67. class ODWindow;
  68. class CList;
  69.  
  70. struct WindowProperties;
  71.  
  72. class CCappuccinoContent;
  73. class CFrameInfo;
  74. class CPrinter;
  75. class CSettings;
  76. class som_CappuccinoSettingsExtension;
  77. class som_CappuccinoSI;
  78.  
  79. #pragma import on
  80.  
  81. //------------------------------------------------------------------------------
  82. // Cappuccino
  83. //------------------------------------------------------------------------------
  84.  
  85. class Cappuccino {
  86.     
  87.       //==================================
  88.       // Overridden Public ODPart Methods
  89.       //==================================
  90. public:
  91.     
  92.     static Cappuccino*        CreatePartObject();
  93.     
  94.     Cappuccino();
  95.     ODOptVirtual ~Cappuccino();
  96.     
  97.     // -- Initialization --
  98.     
  99.     ODOptVirtual void        InitPart(Environment* ev, ODStorageUnit* storageUnit,
  100.                                         ODPart* partWrapper);
  101.     ODOptVirtual void        InitPartFromStorage(Environment* ev, ODStorageUnit* storageUnit,
  102.                                         ODPart* partWrapper);
  103.     
  104.     // -- Storage --
  105.     
  106.     ODOptVirtual void        Release(Environment* ev);
  107.     ODOptVirtual void        ReleaseAll(Environment* ev);
  108.     ODOptVirtual ODSize        Purge(Environment* ev, ODSize size);
  109.     ODOptVirtual void        Externalize(Environment* ev);
  110.     ODOptVirtual void        ExternalizeKinds(Environment* ev, ODTypeList* kindset);
  111.     ODOptVirtual void        ChangeKind(Environment* ev, ODType kind);
  112.     ODOptVirtual void        CloneInto(Environment* ev, ODDraftKey key,
  113.                                         ODStorageUnit* destinationSU,
  114.                                         ODFrame* initiatingFrame);
  115.     ODOptVirtual void        WritePartInfo(Environment* ev, ODInfoType partInfo,
  116.                                         ODStorageUnitView* storageUnitView);
  117.     ODOptVirtual ODInfoType    ReadPartInfo(Environment* ev, ODFrame* frame,
  118.                                         ODStorageUnitView* storageUnitView);
  119.     ODOptVirtual void        ClonePartInfo(Environment* ev, ODDraftKey key, ODInfoType partInfo,
  120.                                         ODStorageUnitView* storageUnitView,
  121.                                         ODFrame* scopeFrame);
  122.     
  123.     // -- Extensions --
  124.     
  125.     ODOptVirtual ODBoolean        HasExtension(Environment *ev, ODType extensionName);
  126.     ODOptVirtual ODExtension*    AcquireExtension(Environment *ev, ODType extensionName);
  127.     ODOptVirtual ODBoolean        ReleaseExtension(Environment *ev, ODExtension* extension);
  128.     
  129.     // -- Layout --
  130.     
  131.     ODOptVirtual void        DisplayFrameAdded(Environment* ev, ODFrame* frame);
  132.     ODOptVirtual void        DisplayFrameRemoved(Environment* ev, ODFrame* frame);
  133.     ODOptVirtual void        DisplayFrameClosed(Environment* ev, ODFrame* frame);
  134.     ODOptVirtual void        DisplayFrameConnected(Environment* ev, ODFrame* frame);
  135.     ODOptVirtual void        AttachSourceFrame(Environment* ev, ODFrame* frame,
  136.                                         ODFrame* sourceFrame);
  137.     ODOptVirtual void        ViewTypeChanged(Environment* ev, ODFrame* frame);
  138.     ODOptVirtual void        PresentationChanged(Environment* ev, ODFrame* frame);
  139.     ODOptVirtual void        SequenceChanged(Environment* ev, ODFrame* frame);
  140.     ODOptVirtual void        ContainingPartPropertiesUpdated(Environment* ev, ODFrame* frame,
  141.                                         ODStorageUnit* propertyUnit);
  142.     ODOptVirtual void        FrameShapeChanged(Environment* ev, ODFrame* frame);
  143.     ODOptVirtual ODID        Open(Environment* ev, ODFrame* frame);
  144.         
  145.     // -- Imaging --
  146.     
  147.     ODOptVirtual void        Draw(Environment* ev, ODFacet* facet, ODShape* invalidShape);
  148.     ODOptVirtual void        GeometryChanged(Environment* ev, ODFacet* facet,
  149.                                         ODBoolean clipShapeChanged,
  150.                                         ODBoolean externalTransformChanged);
  151.     ODOptVirtual void        HighlightChanged(Environment* ev, ODFacet* facet);
  152.     ODOptVirtual void        CanvasChanged(Environment*    ev, ODFacet* facet);
  153.     ODOptVirtual void        CanvasUpdated(Environment* ev, ODCanvas* canvas);
  154.     ODOptVirtual ODULong        GetPrintResolution(Environment*    ev, ODFrame* frame);
  155.     ODOptVirtual void        FacetAdded(Environment* ev, ODFacet* facet);
  156.     ODOptVirtual void        FacetRemoved(Environment* ev, ODFacet* facet);
  157.     
  158.     // -- Activation --
  159.     
  160.     ODOptVirtual ODBoolean    BeginRelinquishFocus(Environment* ev, ODTypeToken focus,
  161.                                         ODFrame* ownerFrame,
  162.                                         ODFrame* proposedFrame);
  163.     ODOptVirtual void        CommitRelinquishFocus(Environment* ev, ODTypeToken focus,
  164.                                         ODFrame* ownerFrame,
  165.                                         ODFrame* proposedFrame);
  166.     ODOptVirtual void        AbortRelinquishFocus(Environment* ev, ODTypeToken focus,
  167.                                         ODFrame* ownerFrame,
  168.                                         ODFrame* proposedFrame);
  169.     ODOptVirtual void        FocusAcquired(Environment* ev,ODTypeToken focus,
  170.                                         ODFrame* ownerFrame);
  171.     ODOptVirtual void        FocusLost(Environment* ev,ODTypeToken focus,
  172.                                         ODFrame* ownerFrame);
  173.     
  174.     // -- Event Handling --
  175.     
  176.     ODOptVirtual ODBoolean    HandleEvent(Environment* ev, ODEventData* event,
  177.                                         ODFrame* frame, ODFacet* facet,
  178.                                         ODEventInfo* eventInfo);
  179.     ODOptVirtual void        AdjustMenus(Environment* ev, ODFrame* frame);
  180.     
  181.     
  182.     // -- Drag & Drop --
  183.     
  184.     ODOptVirtual void        FulfillPromise(Environment* ev, ODStorageUnitView* promiseSUView);
  185.     ODOptVirtual void        DropCompleted(Environment* ev, ODPart* destPart,
  186.                                         ODDropResult dropResult);
  187.     ODOptVirtual ODDragResult DragEnter(Environment* ev, ODDragItemIterator* dragInfo,
  188.                                         ODFacet* facet, ODPoint* where);
  189.     ODOptVirtual ODDragResult DragWithin(Environment* ev, ODDragItemIterator* dragInfo,
  190.                                         ODFacet* facet, ODPoint* where);
  191.     ODOptVirtual void        DragLeave(Environment* ev, ODFacet* facet, ODPoint* where);
  192.     ODOptVirtual ODDropResult Drop(Environment* ev, ODDragItemIterator* dropInfo,
  193.                                         ODFacet* facet, ODPoint* where);
  194.  
  195.     // -- Undo --
  196.  
  197.     ODOptVirtual void        UndoAction(Environment* ev, ODActionData* actionState);
  198.     ODOptVirtual void        RedoAction(Environment* ev, ODActionData* actionState);
  199.     ODOptVirtual void        DisposeActionState(Environment* ev, ODActionData* actionState,
  200.                                         ODDoneState doneState);
  201.  
  202.     // -- Linking --
  203.     
  204.     ODOptVirtual ODLinkSource* CreateLink(Environment* ev, ODByteArray* data);
  205.     ODOptVirtual void        LinkUpdated(Environment* ev, ODLink* link, ODUpdateID updateID);
  206.     ODOptVirtual void        RevealLink(Environment* ev, ODLinkSource* linkSource);
  207.     ODOptVirtual void        LinkStatusChanged(Environment* ev, ODFrame* frame);
  208.     ODOptVirtual void        EmbeddedFrameUpdated(Environment* ev, ODFrame* frame,
  209.                                         ODUpdateID change);
  210.     ODOptVirtual ODBoolean    EditInLinkAttempted(Environment* ev, ODFrame* frame);
  211.     
  212.     // -- Embedding --
  213.  
  214.     ODOptVirtual ODFrame*    RequestEmbeddedFrame(Environment* ev, ODFrame* containingFrame,
  215.                                         ODFrame* baseFrame, ODShape* frameShape,
  216.                                         ODPart* embeddedPart, ODTypeToken viewType,
  217.                                         ODTypeToken presentation,
  218.                                         ODBoolean isOverlaid);
  219.     ODOptVirtual void        RemoveEmbeddedFrame(Environment* ev, ODFrame* embeddedFrame);
  220.     ODOptVirtual ODShape*    RequestFrameShape(Environment* ev, ODFrame* embeddedFrame,
  221.                                         ODShape* frameShape);
  222.     ODOptVirtual void        UsedShapeChanged(Environment* ev, ODFrame* embeddedFrame);
  223.     ODOptVirtual ODShape*    AdjustBorderShape(Environment* ev, ODFacet* embeddedFacet,
  224.                                         ODShape* shape);
  225.     ODOptVirtual ODStorageUnit*    AcquireContainingPartProperties(Environment* ev,
  226.                                         ODFrame* frame);
  227.     ODOptVirtual ODBoolean    RevealFrame(Environment* ev, ODFrame* embeddedFrame,
  228.                                         ODShape* revealShape);
  229.     ODOptVirtual void        EmbeddedFrameSpec(Environment* ev,
  230.                                         ODFrame* embeddedFrame,
  231.                                         ODObjectSpec* spec);
  232.     ODOptVirtual ODEmbeddedFramesIterator*    CreateEmbeddedFramesIterator(Environment* ev,
  233.                                         ODFrame* frame);
  234.  
  235.  
  236.       //===================================
  237.     // Newly Introduced Internal Methods
  238.       //===================================
  239.  
  240.     // (these methods must be public)
  241.     
  242.     // -- Settings Dialog --
  243.     
  244.     ODOptVirtual void        ShowSettingsDialog(Environment* ev, ODFrame* frame);
  245.  
  246.     // -- Data Handling --
  247.     
  248.     ODOptVirtual ODBoolean    TryToEdit(Environment* ev, ODFrame* frame);
  249.  
  250.     ODOptVirtual void        SetContent(Environment* ev, CCappuccinoContent* newContent);
  251.     ODOptVirtual CCappuccinoContent* GetContent();
  252.  
  253.     ODOptVirtual void        SetSettings(Environment* ev, CSettings* newSettings);
  254.     ODOptVirtual CSettings*    GetSettings();
  255.     
  256.     ODOptVirtual void        HandleChange(Environment* ev);
  257.  
  258.     ODOptVirtual ODPart*    GetODPart();
  259.     
  260.     // -- Scripting --
  261.     
  262.     ODOptVirtual void        ConstructSemanticInterface(Environment* ev);
  263.     
  264.     ODOptVirtual void        GetPropertyFromNULL(Environment* ev, DescType desiredClass,
  265.                                         ODOSLToken* container, DescType containerClass,
  266.                                         DescType form, ODDesc* selectionData,
  267.                                         ODOSLToken* value);
  268.     
  269.     ODOptVirtual void        HandleSetData(Environment* ev, ODAppleEvent* message,
  270.                                         ODAppleEvent* reply);
  271.     
  272.     ODOptVirtual void        HandleGetData(Environment* ev, ODAppleEvent* message,
  273.                                         ODAppleEvent* reply);
  274.     
  275.     // (the rest are protected -- and are used only in the Cappuccino class source)
  276.     
  277. protected:
  278.     
  279.     // -- Initialization --
  280.     
  281.     ODOptVirtual void        Initialize(Environment* ev);
  282.     ODOptVirtual void        BuildMenuBar(Environment* ev);
  283.     
  284.     // -- Storage --
  285.     
  286.     ODOptVirtual void        CheckAndAddProperties(Environment* ev,
  287.                                         ODStorageUnit* storageUnit);
  288.     ODOptVirtual void        CleanseContentProperty(Environment* ev,
  289.                                         ODStorageUnit* storageUnit);
  290.     ODOptVirtual void        InternalizeStateInfo(Environment* ev,
  291.                                         ODStorageUnit* storageUnit);
  292.     ODOptVirtual void        InternalizeContent(Environment* ev,
  293.                                         ODStorageUnit* storageUnit);
  294.     ODOptVirtual void        ExternalizeStateInfo(Environment* ev,
  295.                                         ODStorageUnit* storageUnit,
  296.                                         ODDraftKey key, ODFrame* scopeFrame);
  297.     ODOptVirtual void        ExternalizeContent(Environment* ev, ODStorageUnit* storageUnit,
  298.                                         ODDraftKey key, ODFrame* scopeFrame);
  299.     ODOptVirtual void        SetDirty(Environment* ev);
  300.     
  301.     // -- Event Handling --
  302.     
  303.     ODOptVirtual ODBoolean    HandleMenuEvent(Environment* ev, ODEventData* event,
  304.                                            ODFrame* frame);
  305.     ODOptVirtual ODBoolean    HandleMouseEvent(Environment* ev, ODEventData* event,
  306.                                         ODFacet* facet, ODEventInfo* eventInfo);
  307.     ODOptVirtual void        DoMouseDown(Environment* ev, ODEventData* event, ODFacet* facet,
  308.                                         ODEventInfo* eventInfo);
  309.     ODOptVirtual void        DoDialogBox(Environment* ev, ODFrame* frame,
  310.                                           ODSShort dialogID, ODUShort errorNumber = 0);
  311.     ODOptVirtual void        ShowSetTextDialog(Environment* ev, ODFrame* frame);
  312.     
  313.     // -- Imaging --
  314.     
  315.     ODOptVirtual void        DrawFrameView(Environment* ev, ODFacet* facet);
  316.     ODOptVirtual void        DrawIconView(Environment* ev, ODFacet* facet);
  317.     ODOptVirtual void        DrawThumbnailView(Environment* ev, ODFacet* facet);
  318.     ODOptVirtual PicHandle    GenerateThumbnail(Environment*    ev, ODFrame* frame);
  319.     ODOptVirtual void        InvalidateFrameViews(Environment* ev, ODShape* invalidShape = kODNULL,
  320.                                         ODCanvas* biasCanvas = kODNULL);
  321.     
  322.     // -- Activation --
  323.     
  324.     ODOptVirtual void        PartActivated(Environment* ev, ODFrame* frame);
  325.     ODOptVirtual void        PartDeactivated(Environment* ev, ODFrame* frame);
  326.     ODOptVirtual ODBoolean    ActivateFrame(Environment* ev, ODFrame* frame);
  327.     ODOptVirtual void        WindowActivating(Environment* ev, ODFrame* frame,
  328.                                         ODBoolean activating);
  329.     ODOptVirtual void        RelinquishAllFoci(Environment* ev, ODFrame* frame);
  330.     
  331.     // -- Layout --
  332.     
  333.     ODOptVirtual CFrameInfo*    CreateFrameInfo(Environment* ev, ODFrame* frame);
  334.     ODOptVirtual void        ZoomPartWindow(Environment* ev, ODFrame* frame, ODWindow* window,
  335.                                            ODBoolean isZoomingOpen);
  336.     ODOptVirtual ODWindow*    AcquireFramesWindow(Environment* ev, ODFrame* frame);
  337.     ODOptVirtual ODWindow*    CreateWindow(Environment* ev, ODFrame* frame, ODType frameType,
  338.                                         WindowProperties* windowProperties);
  339.     ODOptVirtual void        CleanupWindow(Environment* ev, ODFrame* frame);
  340.     ODOptVirtual WindowProperties*    GetDefaultWindowProperties(Environment* ev, ODFrame* frame,
  341.                                         Rect* windowRect);
  342.     ODOptVirtual WindowProperties*    GetSavedWindowProperties(Environment* ev, ODFrame* frame);
  343.     ODOptVirtual Rect        CalcPartWindowSize(Environment* ev, ODFrame* sourceFrame);
  344.     ODOptVirtual Rect        CalcPartWindowPosition(Environment* ev, ODFrame* frame,
  345.                                         Rect* partWindowBounds);
  346.     ODOptVirtual ODFacet*    GetActiveFacetForFrame(Environment* ev, ODFrame* frame);
  347.     ODOptVirtual ODShape*    CalcNewUsedShape(Environment* ev, ODFrame* frame);
  348.     ODOptVirtual void        UpdateFrame(Environment* ev, ODFrame* frame, ODTypeToken view,
  349.                                         ODShape* usedShape);
  350.     ODOptVirtual void        CleanupDisplayFrame(Environment* ev, ODFrame* frame,
  351.                                         ODBoolean frameRemoved);
  352.     ODOptVirtual void        ContentUpdated(Environment* ev);
  353.  
  354.     // -- Data Interchange --
  355.     ODOptVirtual void        AnnotateInterchangeSU(Environment* ev, ODStorageUnit* su, ODFrame* frame);
  356.     ODOptVirtual void        CloneContents(Environment* ev, ODStorageUnit* su,
  357.                                         ODCloneKind cloneKind, ODFrame* scopeFrame,
  358.                                         ODBoolean isForClipboard);
  359.     ODOptVirtual void        HandlePasteAsResult(Environment* ev, ODPasteAsResult& pasteAsResult, 
  360.                                         ODStorageUnit* contentSU);
  361.     
  362.     // -- Drag & Drop --
  363.     
  364.     ODOptVirtual void        HighlightFacet(Environment* ev, ODFacet* facet, 
  365.                                         ODBoolean show);
  366.     ODOptVirtual ODBoolean    IsDragSupported(Environment* ev, ODDragItemIterator* dragInfo,
  367.                                         ODFacet* facet);
  368.     ODOptVirtual ODDropResult    InitiateDrag(Environment* ev, ODEventData* event, 
  369.                                         ODFacet* facet, ODPoint& where);
  370.     ODOptVirtual ODRgnHandle    CreateDragRegion(Environment* ev, ODFacet* facet);
  371.     ODOptVirtual void        DoDropPasteAs(Environment* ev, ODFacet* facet, ODBoolean* pasteLink);
  372.     
  373.     // -- Clipboard --
  374.     
  375.     ODOptVirtual void        AdjustClipboardComands(Environment* ev, ODFrame* frame);
  376.     ODOptVirtual void        DoCut(Environment* ev, ODFrame* frame);
  377.     ODOptVirtual void        DoCopy(Environment* ev, ODFrame* frame);
  378.     ODOptVirtual void        DoPaste(Environment* ev, ODFrame* frame);
  379.     ODOptVirtual void        DoPasteAs(Environment* ev, ODFrame* frame);
  380.     ODOptVirtual void        DoClear(Environment* ev, ODFrame* frame);
  381.  
  382.     //========================
  383. private:
  384.  
  385.     CList*                                fDisplayFrames;
  386.     ODPart*                                fSelf;
  387.     ODSession*                            fSession;
  388.     
  389.     som_CappuccinoSettingsExtension*    fSettingsExtension;
  390.     som_CappuccinoSI*                    fSemanticInterface;
  391.     
  392.     CPrinter*                            fPrinter;
  393.     ODFacet*                            fHighlightedDragFacet;
  394.     
  395.     CCappuccinoContent*                    fContent;
  396.     CSettings*                            fSettings;
  397.     ODValueType                            fPreferredKind;
  398.     
  399.     ODBoolean                            fDirty;
  400.     ODBoolean                            fReadOnlyStorage;
  401. };
  402.  
  403. #pragma import off
  404.  
  405. //------------------------------------------------------------------------------
  406. // Inline methods
  407. //------------------------------------------------------------------------------
  408.  
  409. inline CCappuccinoContent* Cappuccino::GetContent()
  410. {
  411.     return fContent; 
  412. }
  413.     
  414. inline CSettings* Cappuccino::GetSettings()
  415. {
  416.     return fSettings; 
  417. }
  418.     
  419. inline ODPart* Cappuccino::GetODPart()
  420. {
  421.     return fSelf;
  422. }
  423.  
  424.  
  425. #endif